Zmena BorderStyle v OnShow

Otázka od: Lebeda David

29. 9. 2004 14:34

Ahoj,

v OnShow formu potrebuji podle jistych okolnosti nastavit BorderStyle
formu na bsSingle nebo bsSizeable. Jenze Delphi tohle nechteji udelat
- dostanu vynadano, ze nesmim menit Visible v OnShow nebo OnHide.
Kdyz se to pokusim obejit tak, ze si pres PostMessage v OnShow
necham poslat svou vlastni zpravu a v jeji obsluze teprve menim
BorderStyle, tak to sice funguje, ale okno pri tom blikne. Jak tedy
mohu v OnShow menit BorderStyle tak, aby to slo bez rusivych efektu?

Diky

David Lebeda

Odpovedá: Ondrej Kelle

29. 9. 2004 14:51

> v OnShow formu potrebuji podle jistych okolnosti nastavit BorderStyle
> formu na bsSingle nebo bsSizeable. Jenze Delphi tohle nechteji udelat
> - dostanu vynadano, ze nesmim menit Visible v OnShow nebo OnHide.
> Kdyz se to pokusim obejit tak, ze si pres PostMessage v OnShow
> necham poslat svou vlastni zpravu a v jeji obsluze teprve menim
> BorderStyle, tak to sice funguje, ale okno pri tom blikne. Jak tedy
> mohu v OnShow menit BorderStyle tak, aby to slo bez rusivych efektu?

Zmena BorderStyle sposobi uvolnenie a znovuvytvorenie okna, takze dost
tazko. Mozno by sa dalo vytvorit nejake docasne okno s kopiou bitmapy
povodneho okna, ktorym ho na tu dobu prekryjes.

HTH
TOndrej


Odpovedá: Flaska Jakub

29. 9. 2004 17:52

> v OnShow formu potrebuji podle jistych okolnosti nastavit BorderStyle
> formu na bsSingle nebo bsSizeable. Jenze Delphi tohle nechteji udelat

Nevytvarej ten formular pri spusteni ale az kdyz budes vedet BorderStyle v
runtime.

if not Assigned(MujForm) then begin
  Application.CreateForm(TMujForm, MujForm);
  MujForm.BorderStyle := bsSigle;
end;
MujForm.Show;

Jakub Flaska


Odpovedá: Vlastimil Burian

29. 9. 2004 18:20

SendMessage(Handle, WM_SETREDRAW, 0, 0);
BorderStyle := bsNone;
SendMessage(Handle, WM_SETREDRAW, 1, 0);

-----------------
v OnShow formu potrebuji podle jistych okolnosti nastavit BorderStyle
bez rusivych efektu?